QCombobox代理中信号与槽机制分析 |
您所在的位置:网站首页 › combo slot怎么设置 › QCombobox代理中信号与槽机制分析 |
1、QCombobox类的代理类中信号与槽的定义 class comBoxDelegate : public QStyledItemDelegate { signals: void comboxChanged(int para); public slots: void OnComboBoxChanged(int para) { emit comboxChanged(para); } } QWidget *comBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex &index ) const { QComboBox *editor = new QComboBox(parent); editor->insertItems(0, m_qlist); editor->setCurrentIndex(4); // editor->setCurrentItem(m_qlist.findIndex(m_qlist[4])); // m_pEditor = editor; connect(editor, SIGNAL(currentIndexChanged(int)), this, SLOT(OnComboBoxChanged(int))); return editor; } QComboBox类对象editor位于类comBoxDelegate类中。2、MainWindow槽函数定义 MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) { QObject::connect(m_combobox, SIGNAL(comboxChanged(int)), this, SLOT(ResponseFreSelect(int))); } void MainWindow::ResponseFreSelect(int num) { ui->tableWidget->item(0,6)->setText(QString("%1").arg(m_Debug_Param[num])); ui->tableWidget->item(0,7)->setText(QString("%1").arg(m_Debug_Param[num])); } comBoxDelegate类对象m_combobox位于类MainWindow类中。我们要实现QComboBox类对象信号----------->传递到MainWindow类中,但是二者不在同一个类中, 但二者同时都与comBoxDelegate类有交集。 所以,我们就需要在comBoxDelegate类,将QCombobox类的信号currentIndexChanged(int),进行重新转发一下: void OnComboBoxChanged(int para) { emit comboxChanged(para); } 即:comBoxDelegate类的槽函数,实际上用来将转发信号,重新emit一下。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |